package com.xmut.mall.coupon.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xmut.mall.coupon.entity.CouponEntity;
import com.xmut.mall.coupon.searchparams.BuyerCouponSearchParam;
import com.xmut.mall.coupon.searchparams.ManagerCouponSearchParam;
import com.xmut.mall.coupon.searchparams.SellerCouponSearchParam;
import com.xmut.mall.coupon.utils.RespBean;
import com.xmut.mall.coupon.vo.AddCouponVo;
import com.xmut.mall.coupon.vo.AddPlatformCouponVo;
import com.xmut.mall.coupon.vo.PageVO;

import java.util.Map;

public interface CouponService extends IService<CouponEntity> {

    /**
     * 添加优惠券
     * @param vo
     * @return
     */
    RespBean addCoupon(AddCouponVo vo);

    /**
     * 获取卖家端优惠券的分页数据
     * @param vo
     * @param param
     * @return
     */
    RespBean getSellerCouponPage(PageVO vo, SellerCouponSearchParam param);


    /**
     * 卖家端获取优惠券列表
     * @param params
     * @return
     */
    RespBean sellerGetCouponList(Map<String, Object> params);

    /**
     * 根据ID获取优惠券详情
     * @param id
     * @return
     */
    RespBean getCouponDetail(Long id);

    /**
     * 编辑优惠券
     * @param vo
     * @return
     */
    RespBean editCoupon(AddCouponVo vo);

    /**
     * 关闭当前优惠券活动
     * @param id
     * @return
     */
    RespBean closeCoupon(Long id);

    /**
     * 开启优惠券活动
     * @param params
     * @return
     */
    RespBean openCoupon(Map<String, Object> params);

    /**
     * 根据传入的Map参数获取
     * @param params
     * @return
     */
    RespBean getManagerCouponList(Map<String, Object> params);

    /**
     * 获取商城管理端的优惠券分页数据 获取平台券
     *
     * @param vo
     * @param param
     * @return
     */
    RespBean getManagerCouponPage(PageVO vo, ManagerCouponSearchParam param);

    /**
     * 添加平台优惠券(平台券)
     * @param vo
     * @return
     */
    RespBean AddPlatformCoupon(AddPlatformCouponVo vo);

    /**
     * 根据ID获取平台券的详情
     * @param id
     * @return
     */
    RespBean getPlatformCouponDetail(Long id);

    /**
     * 编辑平台券的内容
     * @param vo
     * @return
     */
    RespBean editPlatformCoupon(AddPlatformCouponVo vo);

    /**
     * 删除优惠券
     * @param id
     * @return
     */
    RespBean deleteCoupon(Long id);

    /**
     * 获取商品详情中的优惠券信息
     * @param skuId
     * @param cateId
     * @return
     */
    RespBean getProductDetailCoupon(Long skuId, Long cateId);

    /**
     * 根据商铺Id获取购物车中可用的优惠券
     * @param storeId
     * @return
     */
    RespBean getCartShopCoupon(Long storeId);

    /**
     * 用户领取优惠券
     * @param params
     * @return
     */
    RespBean receiveCoupon(Map<String, Object> params);

    /**
     * 获取买家端的优惠券分页数据
     *
     * @param vo
     * @param param
     * @return
     */
    RespBean getBuyerCouponPage(PageVO vo, BuyerCouponSearchParam param);

    /**
     * 领取优惠券后减少优惠券数量
     * @param params
     * @return
     */
    RespBean reduceCouponNum(Map<String, Object> params);
}
